# -*- coding: utf-8 -*-
import sys
from PyQt5 import QtCore, QtGui
from PyQt5.QtWidgets import QWidget, QApplication,QMainWindow,QHBoxLayout,QStackedWidget,QLineEdit,QMessageBox,QDialog,QInputDialog
from Public.RequestUtils import StocksRequest
from 分时图 import 分时画图工具类
from K线图 import K线图工具类
import time
import datetime




class MainWindow(QMainWindow):
    相差天数 = -60;
    开始时间 = int(time.mktime((datetime.date.today() + datetime.timedelta(相差天数)).timetuple())*1000)
    结束时间 = int(time.time()*1000)
    def __init__(self, parent=None):
        QWidget.__init__(self, parent)
        self.setMinimumSize(640, 430)  # 设置窗口最小尺寸
        self.setWindowTitle(str('Level2行情实时走势'))
        self.setStyleSheet("QWidget { background-color: black }")
        self.w = None

        self.timer = QtCore.QTimer()
        self.timer.setInterval(1000*60)
        self.timer.start()
        # 信号连接到槽
        self.timer.timeout.connect(self.onTimerOut)
        self.股票数据 = {}
        self._数据请求 = StocksRequest()
        self.查询数据()

        self.stack = QStackedWidget(self)
        self.K线图 = K线图工具类(self)
        self.分时画 = 分时画图工具类(self)
        self.stack.addWidget(self.分时画)
        self.stack.addWidget(self.K线图)
        self.setCentralWidget(self.stack)





    def keyPressEvent(self, e):
        if(e.key() >= QtCore.Qt.Key_0 and  e.key() <= QtCore.Qt.Key_9):

               inputDialog = QInputDialog(self)
               inputDialog.setInputMode(QInputDialog.TextInput)
               inputDialog.setWindowFlags(QtCore.Qt.FramelessWindowHint)
               inputDialog.setStyleSheet("QWidget { background-color: white }")
               inputDialog.setTextValue(chr(e.key()))
               主窗口大小 = self.size()
               inputDialog.setGeometry(主窗口大小.width()-300, 主窗口大小.height()-100, 300, 60)
               #inputDialog.setWindowTitle('Input')
               inputDialog.setLabelText('请输入股票代码:')

               ok = inputDialog.exec_()
               code = inputDialog.textValue()
               if(ok):
                   try:
                      print(code)
                      self.查询数据(code)
                      self.update()
                   except Exception as err:
                       QMessageBox.question(self, 'Message - pythonspot.com', "You typed: " + err, QMessageBox.Ok,
                                             QMessageBox.Ok)

        if (e.key() == QtCore.Qt.Key_Return or e.key() == QtCore.Qt.Key_Enter):
            if(self.stack.currentWidget() == self.分时画):
               self.stack.setCurrentWidget(self.K线图);
            else:
               self.stack.setCurrentWidget(self.分时画);
        if (e.key() == QtCore.Qt.Key_Up):
           self.相差天数 =  self.相差天数+20
           self.开始时间 = int(time.mktime((datetime.date.today() + datetime.timedelta( self.相差天数)).timetuple())*1000)
           self.查询K线数据()
           self.update()

        if (e.key() == QtCore.Qt.Key_Down):
           self.相差天数 =  self.相差天数-20
           self.开始时间 = int(time.mktime((datetime.date.today() + datetime.timedelta( self.相差天数)).timetuple())*1000)
           self.查询K线数据()
           self.update()

    def 查询K线数据(self,股票代码='002373'):
        _K线数据 = self._数据请求.雪球K线数据(股票代码, self.开始时间, self.结束时间);
        self.股票数据['K线数据'] = {}
        self.股票数据['K线数据'] = _K线数据[股票代码]




    def onTimerOut(self):
        self.查询数据()
        self.update()

    def 查询数据(self,股票代码='002373'):
        _实时数据 = self._数据请求.雪球实时数据(股票代码)
        self.股票数据 = _实时数据[股票代码]
        _分时数据 = self._数据请求.雪球分时数据(股票代码);
        self.股票数据['分时数据'] = {}
        self.股票数据['分时数据'] = _分时数据[股票代码]
        self.股票数据['当前最高成交量'] = max(self.股票数据['分时数据']['成交量'])
        self.查询K线数据(股票代码)
        self.股票数据['盘口数据'] = {}
        _盘口数据 = self._数据请求.盘口数据(股票代码);
        self.股票数据['盘口数据'] = _盘口数据[股票代码]

app = QApplication(sys.argv)
dt = MainWindow()
dt.showMaximized()
app.exec_()
